2.5 广播

本文源码请见我的GitHub

规则

1.两个数组维度不同,将小维度的数组姓张将在最左边补1

2.数组在形状上在任意维度上都不匹配,则数组形状会沿着维度为1的维度扩展以匹配另外一个数组的形状。

3.如果两个数组在形状上任意维度都不匹配且没有等于1的维度则会发生异常。

1
import numpy as np
1
2
M = np.ones((2, 3))
a = np.arange(3)
1
2
print(M.shape)
print(a.shape)
(2, 3)
(3,)
1
M + a
array([[1., 2., 3.],
       [1., 2., 3.]])
1
2
a = np.arange(3).reshape(3,1)
b = np.arange(3)
1
a +b
array([[0, 1, 2],
       [1, 2, 3],
       [2, 3, 4]])

广播的实际应用

1
2
3
X = np.random.random((10, 3))
Xmean = X.mean(0)
print(Xmean)
[0.61088259 0.32736058 0.38863271]
1
from scipy import poly1d
1
2
p1 = poly1d([1,2,3,4])
print(p1)
   3     2
1 x + 2 x + 3 x + 4